package vo

// QueryRoleListReq 查询角色列表参数
type QueryRoleListReq struct {
	RoleName string     `json:"roleName"` // 角色名
	RoleKey  string     `json:"roleKey"`  // 权限字符
	Status   string     `json:"status"`   // 状态
	Params   *DateRange `json:"params"`   // 日期范围
	PageNum  int        `json:"pageNum"`  // 第几页
	PageSize int        `json:"pageSize"` // 一页多少行
}

// AllocatedListReq 查询角色关联的用户
type AllocatedListReq struct {
	RoleId      int64  `json:"roleId" validate:"required,min=1"` // 角色id
	UserName    string `json:"userName"`                         // 用户名
	Phonenumber string `json:"phonenumber"`                      // 手机号码
	PageNum     int    `json:"pageNum"`                          // 第几页
	PageSize    int    `json:"pageSize"`                         // 一页多少行
}

// AuthUserSelectReq 给角色分配用户
type AuthUserSelectReq struct {
	RoleId  int64   `json:"roleId" validate:"required,min=1"` // 角色id
	UserIds []int64 `json:"userIds" validate:"required"`      // 用户ids
}

type AuthUserCancelReq struct {
	RoleId int64 `json:"roleId" validate:"required,min=1"` // 角色id
	UserId int64 `json:"userId" validate:"required,min=1"` // 用户id
}

type AuthUserCancelAllReq struct {
	RoleId  int64   `json:"roleId" validate:"required,min=1"` // 角色id
	UserIds []int64 `json:"userIds"`                          // 用户ids
}

// QueryRoleEntity 角色实体
type QueryRoleEntity struct {
	RoleID            int64  `json:"roleId"`            // 角色ID
	RoleName          string `json:"roleName"`          // 角色名称
	RoleKey           string `json:"roleKey"`           // 角色权限字符串
	RoleSort          int32  `json:"roleSort"`          // 显示顺序
	DataScope         string `json:"dataScope"`         // 数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）
	MenuCheckStrictly bool   `json:"menuCheckStrictly"` // 菜单树选择项是否关联显示
	DeptCheckStrictly bool   `json:"deptCheckStrictly"` // 部门树选择项是否关联显示
	Status            string `json:"status"`            // 角色状态（0正常 1停用）
	Remark            string `json:"remark"`            // 备注
	CreatedAt         int64  `json:"createdAt"`         // 创建时间
}

// ChangeRoleStatusReq 修改用户状态参数
type ChangeRoleStatusReq struct {
	RoleId int64  `json:"roleId"` // 角色ID
	Status string `json:"status"` // 状态0正常1禁止
}

// EditRoleReq 修改角色参数
type EditRoleReq struct {
	RoleId            int64   `json:"roleId" validate:"required,min=1"`          // 角色ID
	RoleName          string  `json:"roleName" validate:"required,min=1,max=30"` // 角色名称
	RoleKey           string  `json:"roleKey" validate:"required,min=1,max=100"` // 角色权限字符串
	RoleSort          int32   `json:"roleSort"`                                  // 显示顺序
	Status            string  `json:"status" validate:"required,len=1"`          // 角色状态（0正常 1停用）
	MenuCheckStrictly bool    `json:"menuCheckStrictly"`                         // 菜单树选择项是否关联显示
	MenuIds           []int64 `json:"menuIds"`                                   // 权限菜单id
	Remark            string  `json:"remark" validate:"max=500"`                 // 备注
	UpdateBy          string  `json:"updateBy"`
}

// AddRoleReq 添加角色参数
type AddRoleReq struct {
	RoleName          string  `json:"roleName" validate:"required,min=1,max=30"` // 角色名称
	RoleKey           string  `json:"roleKey" validate:"required,min=1,max=100"` // 角色权限字符串
	RoleSort          int32   `json:"roleSort"`                                  // 显示顺序
	Status            string  `json:"status" validate:"required,len=1"`          // 角色状态（0正常 1停用）
	MenuCheckStrictly bool    `json:"menuCheckStrictly"`                         // 菜单树选择项是否关联显示
	MenuIds           []int64 `json:"menuIds"`                                   // 权限菜单id
	Remark            string  `json:"remark" validate:"max=500"`                 // 备注
	CreateBy          string  `json:"createBy"`
}

// DataScopeReq 分配部门数据权限参数
type DataScopeReq struct {
	RoleId            int64   `json:"roleId" validate:"required,min=1"`
	DataScope         string  `json:"dataScope" validate:"required"` // 数据权限类型
	DeptCheckStrictly bool    `json:"deptCheckStrictly"`             // 部门树选择项是否关联显示
	DeptIds           []int64 `json:"deptIds"`                       // 部门ids
}
